package com.zs.controller;

import pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Map;

@Controller
@ResponseBody
@RequestMapping("/json")
public class JsonController {

/*
*   json/data1 | data2 | data3 {"name": "zs", "age": 18}
*   接受json数据
*   1 可以使用三种数据类型接收（string、map、实体类）
*   2 形参列表默认接收： param类型参数 指定接收json注解 @RequestBody
*   @RequestBody请求体 -> handlerAdapter -> 请求体（json）的数据拿到 -> 转给我们的方法
*
*   额外的配置： 1 导入第三方依赖 javckson-core annotation databind
*              2 给经理配置jackson处理工具 <mvc:annotation-driver/>
*   能接收字符串，不能接收map和实体类
*   <title>Http状态415- 不支持的媒体类型</title>
* 原因： handlerAdapter需要将json字符串转换成map或实体类传递给handler，默认handlerAdapter没有工具和能力！ 415
* 解决此问题就需要上面提到的额外的配置
*
* */
    @PostMapping("/data1")
    public String data1(@RequestBody String json) {
        System.out.println("json:"+json);
        return json;
    }

    @PostMapping("/data2")
    public String data2(@RequestBody Map<String,Object> json) {
        System.out.println("map:"+json);
        return json.toString();
    }

    @PostMapping("/data3")
    public String data3(@RequestBody User user) {
        System.out.println("user:"+user);
        return user.toString();
    }


}
